Python: [BREAKING] Graduate harness todo & mode providers from experimental#7053
Open
westey-m wants to merge 1 commit into
Open
Python: [BREAKING] Graduate harness todo & mode providers from experimental#7053westey-m wants to merge 1 commit into
westey-m wants to merge 1 commit into
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
This PR graduates the Python harness “todo” and “mode” context providers from experimental status so downstream users can rely on them without opting into experimental warnings, while keeping the file-backed todo store experimental. It also renames the AgentModeProvider configuration mapping from mode_descriptions to mode_instructions to better reflect its purpose.
Changes:
- Removed HARNESS experimental decorators/metadata from the graduated todo surface (
TodoItem,TodoStore,TodoSessionStore,TodoProvider) and mode surface (AgentModeProvider,get_agent_mode,set_agent_mode). - Renamed
AgentModeProvider(mode_descriptions=...)toAgentModeProvider(mode_instructions=...)and updated the internal default mapping constant toDEFAULT_MODE_MAP. - Updated tests to assert the graduated symbols carry no experimental metadata, while
TodoFileStoreremains experimental; also removedTodoInputfrom the public API exports.
Reviewed changes
Copilot reviewed 6 out of 6 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| python/packages/core/tests/core/test_harness_todo.py | Updates tests for graduated todo types; imports TodoInput from internal module and keeps TodoFileStore experimental assertions. |
| python/packages/core/tests/core/test_harness_mode.py | Updates mode tests for the mode_instructions rename and removal of experimental metadata checks. |
| python/packages/core/agent_framework/_harness/_todo.py | Removes experimental decoration from graduated todo classes/providers while leaving TodoFileStore experimental. |
| python/packages/core/agent_framework/_harness/_mode.py | Removes experimental decoration from mode helpers/provider and renames configuration and default mapping constant. |
| python/packages/core/agent_framework/init.pyi | Removes TodoInput from public type exports. |
| python/packages/core/agent_framework/init.py | Removes TodoInput from runtime public exports. |
Contributor
Python Test Coverage Report •
Python Unit Test Overview
|
|||||||||||||||||||||||||||||||||||
TaoChenOSU
approved these changes
Jul 10, 2026
giles17
approved these changes
Jul 10, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Motivation & Context
The Microsoft Agent Framework harness depends on several building-block features
that are still marked experimental. As part of releasing those dependencies (see
#6964), the todo and mode context providers are now stable enough to
graduate out of experimental status so downstream users can rely on them without
opting into experimental warnings.
While graduating the mode provider, its
mode_descriptionsparameter was alsorenamed to
mode_instructions, which more accurately reflects that the mappingholds per-mode instructions (when and how to use each mode) that are injected as
instructions into the LLM.
Description & Review Guide
What are the major changes?
@experimental(feature_id=ExperimentalFeature.HARNESS)decoratorsfrom the graduated todo types (
TodoItem,TodoInput,TodoCompleteInput,TodoStore,TodoSessionStore,TodoProvider) and all mode symbols(
AgentModeProvider,get_agent_mode,set_agent_mode).TodoFileStoreexperimental — it is opt-in (the default store isTodoSessionStore) and not yet ready to graduate.TodoInputfrom the public API — it is an internal coercion type(the tool signatures use private TypedDicts), consistent with the already
non-exported
TodoCompleteInput.AgentModeProvider'smode_descriptionsparameter/attribute tomode_instructions, and the internal default map constantDEFAULT_MODE_DESCRIPTIONStoDEFAULT_MODE_MAP.experimental metadata (while
TodoFileStorestays experimental).What is the impact of these changes?
TodoInputis no longer importablefrom
agent_framework, andAgentModeProvider(mode_descriptions=...)must nowbe called as
AgentModeProvider(mode_instructions=...). These affect previewusers of the experimental harness API only; no released API is broken.
ExperimentalFeature.HARNESSid is intentionally retained (stillreferenced by
TodoFileStoreand other harness symbols).What do you want reviewers to focus on?
TodoFileStoreexperimental while graduating the rest of thetodo surface is the desired scope.
Related Issue
Related to #6964
Contribution Checklist
breaking changelabel (or add "[BREAKING]" to the title prefix, before or after any language prefix) — a workflow keeps the label and title prefix in sync automatically.